package com.itheima.day18.第二题;

import com.itheima.day10.第五题.Student;

import java.lang.reflect.Field;
/*请编写一个方法getProperty，该方法接收两个参，第一个为Object类型的obj对象，
第二个为String类型的propertyName，返回值为Object类型，
其作用是可以获取obj对象中名为propertyName的属性的值。在主方法中调用方法进行测试*/
public class Demo {
    public static void main(String[] args) throws Exception {
        Student student = new Student("张三", 21);

        System.out.println(getProperty(student, "name"));
    }

    private static Object getProperty(Object obj, String propertyName) throws Exception {
        //通过反射创建obj类对象
        Class aClass = obj.getClass();
        //创建obj类的对象
        Object object = aClass.newInstance();
        //获取类中的propertyName 的属性
        Field declaredField = aClass.getDeclaredField(propertyName);
        //暴力反射
        declaredField.setAccessible(true);

        Object value = declaredField.get(obj);

        return value;
    }
}
